<?php

declare(strict_types=1);

namespace app\index\middleware;

use app\common\lib\easywechat\OfficialAccount;

/**
 * 网页授权
 */
class OAuth
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        // +-----------------------------------------------------------------
        // | 开发环境使用
        // +-----------------------------------------------------------------
        // | 上传微擎时该代码片段必须注释或删除
        // +-----------------------------------------------------------------

        // 开发环境使用
        // 上传微擎版本该代码片段必须注释
        $uid = request()->header('uid');
        if ($uid) {
            $user = \app\common\model\User::findOrEmpty($uid);
            $user->isEmpty() && fault('用户不存在');
            session('wechat_user', $user->toArray());
            return $next($request);
        }

        // +-----------------------------------------------------------------
        // | 正式环境
        // +-----------------------------------------------------------------
        // | 登陆状态失效时调起授权页面
        // +-----------------------------------------------------------------

        if (!session('?wechat_user')) {
            // 调起网页授权
            app(OfficialAccount::class)->oauth();
        }
        return $next($request);
    }
}
